#include "mydb.h"
#include "mysqlres.h"

MyDB::MyDB()
{
    connection = mysql_init(nullptr);
    if(connection == nullptr)
    {
        std::cout << "Error:" << mysql_error(connection);
    }
}

MyDB::~MyDB()
{
    if(connection != nullptr)
    {
        mysql_close(connection);
    }
}

bool MyDB::initDB(std::string host, std::string user, std::string pwd, std::string db_name)
{
    connection = mysql_real_connect(connection, host.c_str(), 
                    user.c_str(), pwd.c_str(), db_name.c_str(), 0, nullptr, 0);
    if(connection == nullptr)
    {
        std::cout << "Error" << mysql_error(connection);
    }
    return true;
}

MySQLRes::ptr MyDB::exeSQL(std::string sql)
{
    if(mysql_query(connection, sql.c_str()))
    {
        std::cout << "Query Error:" << mysql_error(connection);
    }
    else
    {
        MYSQL_RES* result = mysql_store_result(connection);
        MySQLRes::ptr mysqlRes(new MySQLRes(result));
        return mysqlRes;
    }
    return MySQLRes::ptr(new MySQLRes(nullptr));
}

std::shared_ptr<MYSQL_RES>& MySQLRes::GetData()
{
    return m_data;
}


